48 research outputs found

    Formalization of Component Substitutability

    Get PDF
    AbstractComponent-Based Software Engineering (CBSE) is increasingly used to develop large scale software. In this context, a complex software is composed of many software components which are developed independently and which are considered as black boxes. Furthermore, they are assembled and often dependent from each other. In this setting, component upgrading is a key issue, since it enables software components to evolve. To support component upgrading, we have to deal with component dependencies which need to be expressed precisely. In this paper, we consider that component upgrade requires managing substitutability between the new and the old components. The substitutability check is based on dependency and context descriptions. It involves maintaining the availability of previously used services, while making sure that the effect of the new provided services do not disrupt the system and the context invariants are still preserved. We present here a formal definition and a verification algorithm for safe component substitutability

    Du génie logiciel pour déployer, gérer et reconfigurer les logiciels

    Get PDF
    As a discipline, software engineering embraces various schools of thought, yet remains consistent with respect to its objective. It aims at providing means for effective and inexpensive production of software by contributing mathematical frameworks, methods and tools. Consequently, we witness some automation in software production process that, as of today, allows producing astronomical amounts of lines of code daily. This rapidly and massively produced software is required for all computer equipment that has invaded our daily life in various forms of other devices (PC, tablet, phone, refrigerator, car, etc.). In this world of large software consumption, it is somewhat surprising that the management of software, after its production, remains dominated by manual practices like searching in lists, downloading units and manual installations. In this context, I organized my research activities such that they aim at providing mathematical frameworks, methods and tools to deploy, distribute or update massive amounts of software since 2001, the year of my PhD defense. These research activities were mainly conducted in Brest at the CS department of Telecom Bretagne as part of the PASS team of IRISA. This document puts into perspective my various scientific contributions, undertaken projects, endeavors in training research students and efforts invested as a teacher. My scientific contributions can be divided into five parts: mathematical models and algorithms for dependency management in software deployment; software component models; processes and tools for massive software deployment; dynamic update of programs at runtime; languages for the design and implementation of software development processes. All these works complement each other, thus making it possible to imagine the proposition of methods and tools for large-scale software deployment.Le gĂ©nie logiciel est une discipline constituĂ©e de nombreux courants mais cohĂ©rente par l'objectif affichĂ©. Il s'agit d'aider Ă  la production, de maniĂšre efficace et peu coĂ»teuse, de logiciels en offrant des cadres mathĂ©matiques, des mĂ©thodes et des outils. Ainsi, on a pu assister Ă  une certaine industrialisation du processus de production de logiciel qui permet aujourd'hui de produire, chaque jour, des quantitĂ©s astronomiques de logiciel. Ce logiciel produit rapidement et en grande quantitĂ© est nĂ©cessaire pour tous les Ă©quipements informatiques qui ont envahi notre quotidien (ordinateur, tablette, tĂ©lĂ©phone, rĂ©frigĂ©rateur, voiture, ...). Dans ce monde de grande consommation du logiciel, il est cependant surprenant de constater que la gestion des logiciels aprĂšs leur production est restĂ© dominĂ© par des pratiques manuelles de recherche dans des listes, de tĂ©lĂ©chargement unitaire et d'installation manuelle. C'est dans ce cadre que j'ai dĂ©veloppĂ© une activitĂ© de recherche visant Ă  fournir des cadres mathĂ©matiques, des mĂ©thodes et des outils pour dĂ©ployer, diffuser ou mettre Ă  jour massivement les logiciels depuis 2001 annĂ©e de ma soutenance de thĂšse. Ces activitĂ©s de recherche ont Ă©tĂ© conduites principalement Ă  Brest au sein du dĂ©partement informatique de TĂ©lĂ©com Bretagne dans le cadre de l'Ă©quipe PASS de l'IRISA. Mon Habilitation Ă  Diriger des Recherches est l'occasion de remettre en perspective mes diffĂ©rentes contributions scientifiques, les Ă©tudiants formĂ©s Ă  la recherche, les projets rĂ©alisĂ©s ainsi que mon investissement en tant qu'enseignant. Les contributions scientifiques peuvent ĂȘtre classĂ©es en cinq parties : - des modĂšles mathĂ©matiques et les algorithmes associĂ©s pour la gestion des dĂ©pendances de logiciels lors de leur dĂ©ploiement ; - les modĂšles de composants logiciels ; - les processus et outils pour le dĂ©ploiement de logiciel massif ; - la mise Ă  jour de programmes sans interrompre leur exĂ©cution ; - des langages pour la conception et la rĂ©alisation de processus de dĂ©veloppement logiciel. Tous ces travaux qui se nourrissent et se complĂštent permettent d'imaginer la proposition de mĂ©thodes et outils pour passer Ă  l'Ă©chelle dans la gestion du dĂ©ploiement des logiciels

    Polychronous Interpretation of Synoptic, a Domain Specific Modeling Language for Embedded Flight-Software

    Get PDF
    The SPaCIFY project, which aims at bringing advances in MDE to the satellite flight software industry, advocates a top-down approach built on a domain-specific modeling language named Synoptic. In line with previous approaches to real-time modeling such as Statecharts and Simulink, Synoptic features hierarchical decomposition of application and control modules in synchronous block diagrams and state machines. Its semantics is described in the polychronous model of computation, which is that of the synchronous language Signal.Comment: Workshop on Formal Methods for Aerospace (FMA 2009

    VĂ©rification Statique de Programmes RĂ©partis

    No full text
    In the context of actors, concurrent objects, and more generally inclient/server software, some requests will not be treated by theirtarget. Such a request is called an orphan message and can be either asafety orphan (its target will never be able to treat it) or aliveness orphan (its target could possibly treat it, but it will neverreach the requested state for this processing).Within our research team, some type systems have been built to detectsafety orphans for a process calculus modeling actors. In this thesis,we adapt those static analyzes to the detection of some communicationproblems in real programming languages. Our work is conducted in thecontext of two real languages; on one hand, ML-Act, an extension of MLwith primitives from the actor model designed by our research team,and on the other hand, Erlang, a concurrent and distributed functionallanguage designed by ERICSSON to program their telecommunicationapplications.In order to detect orphans, our systems are based on an inferenceprocess which computes the type of all entities of the program. Thetypes which approximate the actors are inspired by the types usuallyused for records or objects. The type systems are very sophisticated,they include a subtyping notion and rely on two inference algorithmswhich collect constraints from the source code, and then solve them.Their correction is demonstrated using an operational semantics of theactor model based on the interlacing of two reductions (one onfunctional expressions and one on actors). The formalism modelingactors, called configuration is general and common to both languages(which are distinguished only by the functional calculus).To conclude, we make an analysis of the evolutions of theories andtechniques which have been necessary to adapt systems built on processcalculi to complex programming languages.Dans les programmes acteurs ou objets concurrents, et plusgĂ©nĂ©ralement dans les logiciels clients/serveurs, certaines requĂȘtesne pourront pas ĂȘtre traitĂ©es par leur cible. Une telle requĂȘte estappelĂ©e message orphelin, elle peut ĂȘtre : soit un orphelin desĂ»retĂ© (son destinataire ne pourra jamais la traiter), soit unorphelin de vivacitĂ© (son destinataire pourrait Ă©ventuellement latraiter, mais il n'atteindra pas l'Ă©tat nĂ©cessaire Ă  cetraitement).Dans le cadre de l'Ă©quipe Vestale qui m'a accueilli, des systĂšmes detype ont Ă©tĂ© conçus pour dĂ©tecter les orphelins de sĂ»retĂ© pour uncalcul de processus modĂ©lisant les acteurs. Dans cette thĂšse, nousadaptons ces analyses statiques pour dĂ©tecter certains problĂšmes decommunication au sein de vrais langages de programmation. Le premier,ML-Act, une extension de ML avec des primitives du modĂšle d'acteursconçue au sein de l'Ă©quipe Vestale. Le second, Erlang, est un langagefonctionnel concurrent et rĂ©parti conçu par ERICSSON pour construiredes applications de tĂ©lĂ©communication.Pour dĂ©tecter les orphelins, nos systĂšmes sont basĂ©s sur un processusd'infĂ©rence qui calcule le type des diffĂ©rentes entitĂ©s du programme.Les types qui approximent les acteurs sont inspirĂ©s des types utilisĂ©susuellement pour les enregistrements ou les objets. Les systĂšmes detype sont trĂšs sophistiquĂ©s, ils contiennent une notion de sous-typageet reposent sur des algorithmes d'infĂ©rence qui collectent descontraintes Ă  partir du code source, puis les rĂ©solvent. Leurcorrection est dĂ©montrĂ©e en utilisant une sĂ©mantique opĂ©rationnelle dumodĂšle d'acteurs reposant sur un entrelacement de deux rĂ©ductions (unesur les expressions fonctionnelles et une sur les acteurs). Leformalisme modĂ©lisant les acteurs, appelĂ© configuration, est gĂ©nĂ©ralet commun aux deux langages (qui ne se distinguent donc que par lecalcul fonctionnel).En conclusion, nous faisons un bilan des Ă©volutions des thĂ©ories ettechniques qui ont Ă©tĂ© nĂ©cessaires pour adapter des systĂšmesconstruits sur un calcul de processus Ă  des langages de programmationcomplexes

    Vérification statique de programmes répartis

    No full text
    Dans les programmes acteurs ou objets concurrents, et plus gĂ©nĂ©ralement dans les logiciels clients/serveurs, certaines requĂȘtes ne pourront pas ĂȘtre traitĂ©es par leur cible. Une telle requĂȘte est appelĂ©e message orphelin, elle peut ĂȘtre : soit un orphelin de sĂ»retĂ© (son destinataire ne pourra jamais la traiter), soit un orphelin de vivacitĂ© (son destinataire pourrait Ă©ventuellement la traiter, mais il n'atteindra pas l'Ă©tat nĂ©cessaire Ă  ce traitement). Dans le cadre de l'Ă©quipe Vestale qui m'a accueilli, des systĂšmes de type ont Ă©tĂ© conçus pour dĂ©tectĂ©r les orphelins de sĂ»retĂ© pour un calcul de processus modĂ©lisant les acteurs. Dans cette thĂšse, nous adaptons ces analyses statiques pour dĂ©tecter certains problĂšmes de communication au sein de vrais langages de programmation. Le premier, ML-ACT, une extension de ML avec des primitives du modĂšle d'acteurs conçue au sein de l'Ă©quipe Vestale. Le second, ERLANG, est un langage focntionnel concurrent et rĂ©parti conçu par ERICSSON pour construire des applications de tĂ©lĂ©communication. Pour dĂ©tecter les orphelins, nos systĂšmes sont basĂ©s sur un processus d'infĂ©rence qui calcule le type des diffĂ©rentes entitĂ©s du programme. Les types qui approximent les acteurs sont inspirĂ©s des types utilisĂ©s usuellement pour les enregistrements ou les objets. Les systĂšmes de type sont trĂšs sophistiquĂ©s, ils contiennent une notion de sous-typage et reposent sur des algorithmes d'infĂ©rence qui collectent des contraintes Ă  partir du code source, puis les rĂ©solvent. Leur correction est dĂ©montrĂ©e en utilisant une sĂ©mantique opĂ©rationnelle du modĂšle d'acteurs reposant sur un entrelacement de deux rĂ©ductions (une sur les expressions fonctionnelles et une sur les acteurs). Le formalisme modĂ©lisant les acteurs, appelĂ© configuration, est gĂ©nĂ©ral et commun aux deux langages ( qui ne se distinguent donc que par le calcul fonctionnel). En conclusion, nous faisons un bilan des Ă©volutions des thĂ©ories et techniques qui ont Ă©tĂ© nĂ©cessaires pour adapter des sytĂšmes construits sur un calcul de processus Ă  des langages de programmation complexes.TOULOUSE-ENSEEIHT (315552331) / SudocSudocFranceF

    Integrating extra-functional properties in component deployment dependencies

    No full text
    International audienceComponent-Based Software Engineering (CBSE) is a widely used approach for the software design, particularly when addressing large scale software. The common practice is to build software by composing large collections of components. Such software requires a complex management of their dependencies to be deployed successfully and safely. Therefore, all component dependencies, functional and extra-functional one must be precisely and formally specified. In a previous work, we have proposed a formal language to specify functional dependencies and a formal deployment framework to manage them. Based on this work, we propose an extension with extra-functional dependencies specification and management for component deployment. With this extension, it is possible to specify that a component provides or requires a service with specific extra-functional properties (such as security level, version information, resource consumption level, etc.). We present here how specifying extra-functional component dependencies and how managing them to be able to ensure success and safety of component installation and deinstallation

    Analysis of deployment dependencies in software components

    No full text
    International audienceAdministration and deployment of software systems become increasingly complex. This complexity results from the need of uniform access to applications from heterogeneous terminals through different communication infrastructures. Moreover, applications consists in complex architectures of lot of small components connected together. A first step to simplify deployment is to have an unified and abstract model for representing deployment dependencies and managing them properly. Therefore, we propose here a deployment model and a conceptual foundation for component installation. Installation dependencies and installation rules are expressed in a logic language

    Dependability in software component deployment

    No full text
    International audienceThe deployment of distributed systems is extremely complex. Indeed, software deployment faces significant problems of success and safety. These problems are due to the lack of a unified model, a global architecture for deployment and an explicit dependency representation among the target system and application components. Therefore, we advocate moving from an ad hoc approach to a structured, systematic and safe approach. In this paper, we propose a generic model and an architecture for a dependable deployment

    Static analysis of communications for Erlang

    No full text
    In this paper, we present an insight of the two major contributions of works made to build a static analyzer of Erlang programs. First, we introduce a general framework based on a process calculus (the con gurations). This formalism describes concurrent aspects and abstracts functional ones. Obtaining the Erlang semantics is then just instantiating this framework with an adequate functional setting. The second contribution is a sophisticated type system for Erlang. This type system infers types and subtyping constraints for a program and ensures that the collected constraints have at least one solution. This system detects usual functional errors but also some of the communication errors. More precisely, for each process, it cumulates all received messages and all handled messages and ensures that the rst is included in the second. To do this, it borrows concepts to the object (or record) usual typing in ML
    corecore